/**
 * 
 */
package mx.bd.async.image;

import mx.bd.BD;
import mx.bd.BDManager;
import mx.beans.Image;
import mx.mxgamer.MXGamer;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.AsyncTask;
import android.util.Log;

/**
 * @author v1ctor
 *
 */
public class ImageCreateTask extends AsyncTask<Image, Void, Boolean> {

	private SQLiteDatabase db;

	/**
	 * Creamos un task para poder lanzar el thread.
	 */
	public ImageCreateTask() {
		db = BDManager.getDataBase();
	}

	@Override
	protected Boolean doInBackground(Image... imageArray) {

			try {
				
				Image image = imageArray[0];
				// viene con id = -1
				ContentValues values = new ContentValues();
				values.put(BD.sUri, image.getUri());
				
				long id = db.insert(BD.VIMAGE, null, values);
				// regresa el ROWID, debería dejarlo así o consultar la base de datos por el id...
				
				image.setId(id);
				
				values = new ContentValues();
				values.put(BD.nIDvgame, image.getIdPadre());
				values.put(BD.nIDvimage, image.getId());
				db.insert(BD.VGAME_VIMAGE, null, values);
				
				return new Boolean(true);
			} catch (SQLiteException e) {
				Log.e("ImageUpdateTask", e.toString());
			}
		
		return new Boolean(false);
	}

	@Override
	protected void onProgressUpdate(Void... values) {
		super.onProgressUpdate(values);
	}

	@Override
	protected void onPostExecute(Boolean result) {

		// Considerar swapear y quitar el else, (solo testing) pues al usuario
		// "no le importa que se guarde bien", lo presupone así
		if (result.booleanValue()) {
			MXGamer.toastMessage(MXGamer.CREATE_MSG_OK);
		} else {
			MXGamer.toastMessage(MXGamer.CREATE_MSG_FAIL);
		}
	}

}
